package com.heima.article.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.article.msg.ArticleBehaviorStreamMsg;
import com.heima.article.pojo.ApArticle;
import com.heima.article.pojo.ApHotArticles;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 热文章表 服务类
 * </p>
 *
 * @author HM
 * @since 2023-03-22
 */
public interface ApHotArticlesService extends IService<ApHotArticles> {


    /**
     * 计算days天前的文章的分值
     *
     * @param days
     */
    void calculateArticleScore(long days);

    /**
     * 从redis中获取热点文章的id集合, 由分值从大到小排序
     *
     * @return
     */
    Set<String> getHotArticleIdReverseRangeByScore();

    /**
     * 从redis中获取热点文章信息
     *
     * @return
     */
    List<ApArticle> loadApp();

    /**
     * 监听到Kafka Stream输出后的回调方法, 实时更新Article分值
     *
     * @param streamMsg
     */
    void updateArticleScore(ArticleBehaviorStreamMsg streamMsg);

    /**
     * 每天凌晨一点从redis中读取昨日的热点数据并更新到数据库
     */
    void redisDataToDB();

}
